package com.shen.unsafe;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

public class ListTest {
    public static void main(String[] args) {
        /**
         * 并发下ArrayList是不安全的
         */
       // List<String> list=new ArrayList<>();
        /**
         *  在ArrayList基础上添加synchronized关键字
         */
       // List<String> list=new Vector<>();
        /**
         * 将不安全的ArrayList转换为安全的List  Iterator需要手动同步
         */
      //  List<String> list = Collections.synchronizedList(new ArrayList<>());
        /**
         * JUC方式 推荐  读写分离 使用重入锁
         */
       List<String> list=new  CopyOnWriteArrayList<>();
        for (int i = 0; i < 100; i++) {
             new Thread(()->{
                 list.add(UUID.randomUUID().toString().substring(0,5));
                 System.out.println(list);
             },String.valueOf(i)).start();
        }

        /**
         * Exception in thread "48" java.util.ConcurrentModificationException  并发修改异常
         */

    }
}
